home *** CD-ROM | disk | FTP | other *** search
- ;;; -*- Scheme -*-
-
- #|
- Description:
- This code tests tail recursion and dynamic links.
-
- Usage:
- (go) -> infinite loop printing a
- |#
-
- (declare (usual-integrations))
-
- (define (go)
- (define (atom? x)
- (not (pair? x)))
-
- (define (flat-apply f original)
- (define (flatten-1 l add-to-what)
- (if (atom? l)
- (f l add-to-what)
- (flatten-1 (car l) (flatten-2 (cdr l) add-to-what))))
-
- (define (flatten-2 l add-to-what)
- (cond ((null? l) add-to-what)
- ((atom? l) (error "Flatten: Bad list" original))
- (else (flatten-1 (car l) (flatten-2 (cdr l) add-to-what)))))
-
- (flatten-2 original '()))
-
- (define (test-f element a-list)
- (newline)
- (write element)
- (flat-apply test-f (cons element a-list)))
-
- (flat-apply test-f '(a)))